package com.haixiaoke.saas.repository.util.Tree;

import java.util.ArrayList;
import java.util.List;

public class TreeUtil {
    //
    // /**
    //  * 构造树结构
    //  *
    //  * @Param: [T]
    //  * @Author: zl
    //  * @Date: 2021/6/1 9:10
    //  */
    // public static List<Node> buildTree(List<? extends Node> nodeList) {
    //     List<Node> nodes = new ArrayList<>();
    //     if (nodeList != null) {
    //         for (Node node : nodeList) {
    //             List parentId = node.getParentId();
    //             if (parentId == null || "".equals(parentId)) {
    //                 nodes.add(node);
    //                 continue;
    //             }
    //             for (Node parent : nodeList) {
    //                 if (parent.getValue().equals(parentId)) {
    //                     List<Node> parentList = parent.getChildren();
    //                     if (parentList == null) {
    //                         parentList = new ArrayList<>();
    //                         parentList.add(node);
    //                         parent.setChildren(parentList);
    //                     } else {
    //                         parentList.add(node);
    //                     }
    //                 }
    //             }
    //         }
    //     }
    //     return nodes;
    // }
    //
    //
    // /**
    //  * 给树节点设置层级rank标识
    //  *
    //  * @param nodes
    //  * @Author zl
    //  */
    // public static void setLevel(List<Node> nodes) {
    //     if (nodes != null) {
    //         for (Node node : nodes) {
    //             String parentId = node.getParentId();
    //             if (parentId == null || "".equals(parentId)) {
    //                 node.setLevel(1);
    //                 dfsLevel(node);
    //             }
    //         }
    //     }
    // }
    //
    // /**
    //  * 递归遍历节点数
    //  *
    //  * @param node
    //  */
    // public static void dfsLevel(Node node) {
    //     List<Node> children = node.getChildren();
    //     if (children == null || children.isEmpty()) {
    //         return;
    //     }
    //     for (Node child : children) {
    //         child.setLevel(node.getLevel() + 1);
    //         dfsLevel(child);
    //     }
    //
    // }
    //
    // /**
    //  * 获取树的最大层级
    //  *
    //  * @param nodes
    //  * @return
    //  */
    // public static int maxLevel(List<Node> nodes, int maxlevel) {
    //     if (nodes == null) {
    //         return 0;
    //     }
    //     for (Node node : nodes) {
    //         maxlevel = Math.max(node.getLevel(), maxlevel);
    //         if (node.getChildren() != null) {
    //             return maxLevel(node.getChildren(), maxlevel);
    //         }
    //     }
    //     return maxlevel;
    // }
    //
    // /**
    //  * 获取树的某一层级所有节点
    //  *
    //  * @param nodes
    //  * @param level
    //  * @return
    //  */
    // public static List<Node> getLevelNode(List<Node> nodes, int level, List<Node> nodeList) {
    //     if (nodes == null) {
    //         return nodeList;
    //     }
    //     for (Node node : nodes) {
    //         if (node.getLevel() == level) {
    //             nodeList.add(node);
    //         }
    //         if (node.getChildren() != null) {
    //             getLevelNode(node.getChildren(), level, nodeList);
    //         }
    //     }
    //     return nodeList;
    // }




}
